package com.cabal.mall.service;

import com.cabal.auth.dto.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

public interface CabalMallService {

    /**
     * 商城购买商品
     *
     * @param cabalMallBuyItemDTO
     * @return
     */
    String mallShopBuyItems(CabalMallBuyItemDTO cabalMallBuyItemDTO);

    /**
     * 初始化商品列表
     *
     * @param itemList
     */
    void initMallItems(List<String> itemList, Integer category);

    /**
     * 发送商城币
     *
     * @param account
     * @param mallCoin
     */
    void sendMallCoin(String account, String mallCoin);

    /**
     * 查询玩家个人购买记录
     *
     * @param userNum
     * @return
     */
    List<MallBuyRecordDTO> searchMallBuyRecordList(String userNum);


    /**
     * 查询商品列表
     *
     * @param category
     * @return
     */
    List<MallSellItemDTO> searchMallSellItemList(String category);

    /**
     * GM BUFF充值
     *
     * @param cabalCharacterGmBuffDTO
     * @return
     */
    String rechargeGmBuff(CabalCharacterGmBuffDTO cabalCharacterGmBuffDTO);

    /**
     * GM BUFF检查定时任务
     */
    void checkGmBuffJob();

    /**
     * 根据关键字模糊查询
     *
     * @param itemNameKeyword
     * @return
     */
    List<MallSellItemDTO> searchItemListByKeyword(String itemNameKeyword);

    /**
     * 更新挂店状态
     *
     * @param updateShopStateDTO
     * @return
     */
    String updateShopState(UpdateShopStateDTO updateShopStateDTO);

    /**
     * 查询服装call预览数据列表
     *
     * @return
     */
    List<CabalAvatarItemDTO> selectGarmentCallInfoList(String account);

    /**
     * 查询武器call预览数据列表
     *
     * @param account(userNum)
     * @return
     */
    List<WeaponAvatarItemDTO> selectWeaponCallInfoList(String account);

    /**
     * 查询头饰call预览数据列表
     *
     * @param account
     * @return
     */
    List<CabalAvatarItemDTO> selectHeadWearCallInfoList(String account);

    /**
     * 检查GMBUFF
     *
     * @param account
     * @return
     */
    String checkGmBuff(String account);

    /**
     * 根据副本信息查询配置地图传送点的wrap ID
     *
     * @param dungeonTargetPreId
     * @param dungeonTargetBackId
     * @return
     */
    String getWarpIdByDungeonTargetId(String dungeonTargetPreId, String dungeonTargetBackId);


    /**
     * 初始化回收商品配置表
     *
     * @param itemList
     */
    void initEquipmentSellConfig(List<String> itemList, Integer itemType);

    /**
     * 根据回收商品配置表初始化活动商人数据
     *
     */
    void initEventData(Integer itemType);

    /**
     * 扣除商城币操作
     *
     * @param account
     * @param deductType
     * @return
     */
    String deductMallCoinHandle(String account, String deductType);

    /**
     * 获得抽奖次数
     *
     * @param account
     * @return
     */
    String getPrizeDrawCount(String account);

    /**
     * 扣除抽奖次数
     *
     * @param account
     * @return
     */
    String deductPrizeDrawCount(String account);

    /**
     * 记录中奖日志
     *
     * @param account
     * @param rewardLevel
     * @return
     */
    String recordPrizeDrawLog(String account, String rewardLevel);


    /**
     * 查询奖池
     *
     * @return
     */
    CabalLotteryPoolConfigDTO getLotteryPoolConfig();

    /**
     * 查询个人中奖记录
     *
     * @param userNum
     * @return
     */
    List<CabalPrizeDrawLogDTO> searchCabalPrizeDrawLogList(String userNum);

    /**
     * 查询失去公告商品集合
     *
     * @return
     */
    List<PickUpItemDTO> selectPickUpItemList();
}
